@inproceedings{Mycroft:1984,
 author = {Mycroft, Alan},
 title = {Polymorphic Type Schemes and Recursive Definitions},
 booktitle = {Proceedings of the 6th Colloquium on International Symposium on Programming},
 year = {1984},
 isbn = {3-540-12925-1},
 pages = {217--228},
 numpages = {12},
 url = {http://dl.acm.org/citation.cfm?id=647326.721798},
 acmid = {721798},
 publisher = {Springer-Verlag},
 address = {London, UK, UK},
} 


@article{Henglein:1993,
 author = {Henglein, Fritz},
 title = {Type Inference with Polymorphic Recursion},
 journal = {ACM Trans. Program. Lang. Syst.},
 issue_date = {April 1993},
 volume = {15},
 number = {2},
 month = apr,
 year = {1993},
 issn = {0164-0925},
 pages = {253--289},
 numpages = {37},
 url = {http://doi.acm.org/10.1145/169701.169692},
 doi = {10.1145/169701.169692},
 acmid = {169692},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {polymorphism, recursion, semiunification, type inference},
} 

@article{Kfoury:1993,
 author = {Kfoury, A. J. and Tiuryn, J. and Urzyczyn, P.},
 title = {Type Reconstruction in the Presence of Polymorphic Recursion},
 journal = {ACM Trans. Program. Lang. Syst.},
 issue_date = {April 1993},
 volume = {15},
 number = {2},
 month = apr,
 year = {1993},
 issn = {0164-0925},
 pages = {290--311},
 numpages = {22},
 url = {http://doi.acm.org/10.1145/169701.169687},
 doi = {10.1145/169701.169687},
 acmid = {169687},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {fixpoint operator, polymorphic abstraction, polymorphic recursion, semiunification},
} 

@article{Pottier,
 author = {Francois Pottier},
 title = {Type systems, Polymorphic type inference, recursive types, and more},
 journal = {Slides available from: \url{http://gallium.inria.fr/~fpottier/mpri/cours03.pdf}},
} 

@inproceedings{Jones:1997,
 author = {Jones, Mark P.},
 title = {First-class Polymorphism with Type Inference},
 booktitle = {Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
 series = {POPL '97},
 year = {1997},
 isbn = {0-89791-853-3},
 location = {Paris, France},
 pages = {483--496},
 numpages = {14},
 url = {http://doi.acm.org/10.1145/263699.263765},
 doi = {10.1145/263699.263765},
 acmid = {263765},
 publisher = {ACM},
 address = {New York, NY, USA},
} 

@inproceedings{Odersky:1996,
 author = {Odersky, Martin and L\"{a}ufer, Konstantin},
 title = {Putting Type Annotations to Work},
 booktitle = {Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
 series = {POPL '96},
 year = {1996},
 isbn = {0-89791-769-3},
 location = {St. Petersburg Beach, Florida, USA},
 pages = {54--67},
 numpages = {14},
 url = {http://doi.acm.org/10.1145/237721.237729},
 doi = {10.1145/237721.237729},
 acmid = {237729},
 publisher = {ACM},
 address = {New York, NY, USA},
} 

@article{PeytonJones:2007,
 author = {Peyton Jones, Simon and Vytiniotis, Dimitrios and Weirich, Stephanie and Shields, Mark},
 title = {Practical Type Inference for Arbitrary-rank Types},
 journal = {J. Funct. Program.},
 issue_date = {January 2007},
 volume = {17},
 number = {1},
 month = jan,
 year = {2007},
 issn = {0956-7968},
 pages = {1--82},
 numpages = {82},
 url = {http://dx.doi.org/10.1017/S0956796806006034},
 doi = {10.1017/S0956796806006034},
 acmid = {1194876},
 publisher = {Cambridge University Press},
 address = {New York, NY, USA},
} 

@inproceedings{Leijen:2009,
 author = {Leijen, Daan},
 title = {Flexible Types: Robust Type Inference for First-class Polymorphism},
 booktitle = {Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
 series = {POPL '09},
 year = {2009},
 isbn = {978-1-60558-379-2},
 location = {Savannah, GA, USA},
 pages = {66--77},
 numpages = {12},
 url = {http://doi.acm.org/10.1145/1480881.1480891},
 doi = {10.1145/1480881.1480891},
 acmid = {1480891},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {first-class polymorphism, mlf, system f},
} 


@inproceedings{Wadler:1989,
 author = {Wadler, P. and Blott, S.},
 title = {How to Make Ad-hoc Polymorphism Less Ad Hoc},
 booktitle = {Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
 series = {POPL '89},
 year = {1989},
 isbn = {0-89791-294-2},
 location = {Austin, Texas, USA},
 pages = {60--76},
 numpages = {17},
 url = {http://doi.acm.org/10.1145/75277.75283},
 doi = {10.1145/75277.75283},
 acmid = {75283},
 publisher = {ACM},
 address = {New York, NY, USA},
} 

@inproceedings{jones1997type,
  title={Type classes: exploring the design space},
  author={Jones, Simon Peyton and Jones, Mark and Meijer, Erik},
  booktitle={Haskell workshop},
  volume={1997},
  year={1997}
}

@book{jones2003qualified,
  title={Qualified types: theory and practice},
  author={Jones, Mark P},
  volume={9},
  year={2003},
  publisher={Cambridge University Press}
}

@inproceedings{PeytonJones:1993,
 author = {Peyton Jones, Simon L. and Wadler, Philip},
 title = {Imperative Functional Programming},
 booktitle = {Proceedings of the 20th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
 series = {POPL '93},
 year = {1993},
 isbn = {0-89791-560-7},
 location = {Charleston, South Carolina, USA},
 pages = {71--84},
 numpages = {14},
 url = {http://doi.acm.org/10.1145/158511.158524},
 doi = {10.1145/158511.158524},
 acmid = {158524},
 publisher = {ACM},
 address = {New York, NY, USA},
} 

@techreport{cheney2003first,
  title={First-class phantom types},
  author={Cheney, James and Hinze, Ralf},
  year={2003},
  institution={Cornell University}
}

@inproceedings{Xi:2003,
 author = {Xi, Hongwei and Chen, Chiyan and Chen, Gang},
 title = {Guarded Recursive Datatype Constructors},
 booktitle = {Proceedings of the 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
 series = {POPL '03},
 year = {2003},
 isbn = {1-58113-628-5},
 location = {New Orleans, Louisiana, USA},
 pages = {224--235},
 numpages = {12},
 url = {http://doi.acm.org/10.1145/604131.604150},
 doi = {10.1145/604131.604150},
 acmid = {604150},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {guarded recursive datatype constructors},
} 

@inproceedings{Sheard:2004,
 author = {Sheard, Tim},
 title = {Languages of the Future},
 booktitle = {Companion to the 19th Annual ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages, and Applications},
 series = {OOPSLA '04},
 year = {2004},
 isbn = {1-58113-833-4},
 location = {Vancouver, BC, CANADA},
 pages = {116--119},
 numpages = {4},
 url = {http://doi.acm.org/10.1145/1028664.1028711},
 doi = {10.1145/1028664.1028711},
 acmid = {1028711},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {equality constrained types, formal methods, formal reasoning systems, staged languages, static constraint management},
} 

@article{Vytiniotis:2011,
 author = {Vytiniotis, Dimitrios and Peyton jones, Simon and Schrijvers, Tom and Sulzmann, Martin},
 title = {Outsidein(x) Modular Type Inference with Local Assumptions},
 journal = {J. Funct. Program.},
 issue_date = {September 2011},
 volume = {21},
 number = {4-5},
 month = sep,
 year = {2011},
 issn = {0956-7968},
 pages = {333--412},
 numpages = {80},
 url = {http://dx.doi.org/10.1017/S0956796811000098},
 doi = {10.1017/S0956796811000098},
 acmid = {2139533},
 publisher = {Cambridge University Press},
 address = {New York, NY, USA},
} 

@article{Simonet:2007,
 author = {Simonet, Vincent and Pottier, Fran\c{c}ois},
 title = {A Constraint-based Approach to Guarded Algebraic Data Types},
 journal = {ACM Trans. Program. Lang. Syst.},
 issue_date = {January 2007},
 volume = {29},
 number = {1},
 month = jan,
 year = {2007},
 issn = {0164-0925},
 articleno = {1},
 url = {http://doi.acm.org/10.1145/1180475.1180476},
 doi = {10.1145/1180475.1180476},
 acmid = {1180476},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {GADTs, Generalized algebraic data types, constraint-based type inference},
} 
